import axios, { type AxiosResponse } from 'axios';
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'


/* 定义response对象的data接口 */
interface ResponseData<T> {
  code: number;
  data: T;
  message: string;
}
// 配置新建一个 axios 实例
const service = axios.create({
	baseURL: '/app-dev',
	timeout: 20000,
});

// 添加请求拦截器
service.interceptors.request.use(
	(config) => {
		NProgress.start()
		return config;
	}
);

// 添加响应拦截器
service.interceptors.response.use(
  /* 约束一下response */
	async (response: AxiosResponse<ResponseData<any>>) => {
		// 对响应数据做点什么
		const res = response.data;
		NProgress.done()
    if (res.code !== 200) { /* 成功数据的code值为200 */
     
			return Promise.reject(service.interceptors.response);
		} else {
      return res.data; /* 返回成功响应数据中的data属性数据 */
		}
	},
	(error) => {
		NProgress.done()
		// 对响应错误做点什么
		if (error.message.indexOf('timeout') != -1) {
			console.log('网络超时');
		} else if (error.message == 'Network Error') {
			console.log('网络连接错误');
		} 
		return Promise.reject(error);
	}
);

export default service;
